/*
	Name: 消防局的设立 
	Author: There,hello
	Date: 24-10-19 19:05
	Description: Luogu P2279
	Algorithm: 树形DP
*/
#include<bits/stdc++.h>
using namespace std;
#define add(x,y) edge[++tail]=(dd){head[x],y};head[x]=tail;
int n,head[1010],tail,dp[1010][5];
/*
    dp[u][0]为u为根的树以及自己+u'fa+u'gfa都被覆盖
    dp[u][1]为u为根的树以及自己+u'fa都被覆盖
    dp[u][2]为u为根的树都被覆盖
    dp[u][3]为u'son都被覆盖
    dp[u][4]为u'gson都被覆盖

    dp[u][0]>=dp[u][1]>=dp[u][2]>=dp[u][3]>=dp[u][4]
    dp[u][0]=sum(dp[v][4])+1
    dp[u][1]=min(sum(dp[v][3])+dp[s][0],dp[u][0])
    dp[u][2]=min(sum(dp[v][2])+dp[s][1],dp[u][1])
    dp[u][3]=min(sum(dp[v][2]),dp[u][2])
    dp[u][4]=min(sum(dp[v][3]),dp[u][3])
*/
struct dd
{
    int ne,to;  
}edge[2020];
void dfs(int t,int fa){
    dp[t][0]=1;
    int dp1=0,dp2=0;
    int f=0;
    for(int i=head[t];i;i=edge[i].ne){
        if(fa!=edge[i].to){
            f=1;
            dfs(edge[i].to,t);
            dp[t][0]+=dp[edge[i].to][4];
            dp1+=dp[edge[i].to][3];
            dp2+=dp[edge[i].to][2];
            dp[t][3]+=dp[edge[i].to][2];
            dp[t][4]+=dp[edge[i].to][3];
        }
    }
    if(f==0){
        dp[t][1]=dp[t][2]=1;
    }
    else{
        dp[t][1]=0x7fffffff;
        dp[t][2]=0x7fffffff;
        for(int i=head[t];i;i=edge[i].ne){
            if(fa!=edge[i].to){
                dp[t][1]=min(dp[t][1],dp1-dp[edge[i].to][3]+dp[edge[i].to][0]);
                dp[t][2]=min(dp[t][2],dp2-dp[edge[i].to][2]+dp[edge[i].to][1]);
            }
        }
        dp[t][1]=min(dp[t][1],dp[t][0]);
        dp[t][2]=min(dp[t][2],dp[t][1]);
        dp[t][3]=min(dp[t][3],dp[t][2]);
        dp[t][4]=min(dp[t][4],dp[t][3]);
    }
}
int main(){
    scanf("%d",&n);
    for(int i=1,x;i<n;++i){
        scanf("%d",&x);
        add(i+1,x);
        add(x,i+1);
    }
    dfs(1,-1);
    printf("%d",dp[1][2]);
}